home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ASME's Mechanical Engine…ing Toolkit 1997 December
/
ASME's Mechanical Engineering Toolkit 1997 December.iso
/
basic
/
mort.bas
< prev
next >
Wrap
BASIC Source File
|
1987-04-17
|
10KB
|
287 lines
10 REM Computer Mortgage Program
20 REM Version 0.01 (C)Copyright T Herrmann 1986
30 REM Licensed Material - Program Property of TH
40 REM Author - Terry J. Herrmann
50 DEF SEG
60 KEY OFF:SCREEN 0,1:COLOR 0,3,1:WIDTH 40:CLS:LOCATE 5,19:PRINT "IBM"
70 LOCATE 7,12,0:PRINT "Personal Computer"
80 COLOR 10,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
90 LOCATE 11,9,0:PRINT CHR$(179)+" MORTGAGE "+CHR$(179)
100 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
110 LOCATE 13,9,0:PRINT CHR$(179)+" Version 0.01 "+CHR$(179)
120 LOCATE 14,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
130 COLOR 15,0:LOCATE 17,4,0:PRINT "(C) Copyright T. Herrmann 1986"
140 COLOR 14,0:LOCATE 23,7,0:PRINT "Press space bar to continue"
150 IF INKEY$ <> "" THEN GOTO 150
160 CMD$ = INKEY$
170 IF CMD$ = " " THEN GOTO 200
180 IF CMD$ =CHR$(27) THEN GOTO 300
190 GOTO 160
200 COLOR 15,0:CLS:DEFDBL P:DIM AMORT(500,2):SCREEN 0
210 DEF SEG=0
220 IF (PEEK(&H410) AND &H30)<>&H30 THEN COLS = 3:GOTO 240
230 WIDTH 80:COLS=8
240 DEF SEG
250 GOSUB 340
260 IF ASC(I$)=27 THEN 300
270 IF MID$(I$,1,1)="2" THEN GOTO 1160
280 IF MID$(I$,1,1)="1" THEN GOTO 600
290 GOTO 250
300 IF SAMPLES$ <> "YES" THEN GOTO 320
310 CHAIN "SAMPLES",1000
320 GOSUB 580
330 END
340 REM - MAIN OPTION MENU
350 CLS:COLOR 4,7 :PRINT " MORTGAGE ANALYSIS "
360 LOCATE 3,1:PRINT "OPTIONS - "
370 PRINT "1 - MORTGAGE PAYMENT COMPARISONS "
380 PRINT "2 - MORTGAGE AMORTIZATION"
390 PRINT "ESC KEY - EXIT"
400 PRINT""
410 PRINT "OPTION NUMBER (1,2, OR ESC) =====>"
420 PRINT "NOTE: PRESS THE ENTER KEY WHEN DONE"
430 PRINT ""
440 COLOR 0,3,1
450 PRINT CHR$(218)+STRING$(37,CHR$(196))+CHR$(191)
460 PRINT CHR$(179)+" MORTGAGE PAYMENT COMPARISONS "+CHR$(179)
470 PRINT CHR$(179)+" - USE THIS OPTION TO COMPARE "+CHR$(179)
480 PRINT CHR$(179)+" THE MONTHLY PAYMENTS OF "+CHR$(179)
490 PRINT CHR$(179)+" MORTGAGES AT VARIOUS RATES "+CHR$(179)
500 PRINT CHR$(179)+" AND PRINCIPAL AMOUNTS. "+CHR$(179)
510 PRINT CHR$(179)+" MORTGAGE AMORTIZATION "+CHR$(179)
520 PRINT CHR$(179)+" - USE THIS OPTION TO CALCULATE "+CHR$(179)
530 PRINT CHR$(179)+" THE PRINCIPAL AND INTEREST "+CHR$(179)
540 PRINT CHR$(179)+" PAID OVER ANY 12 MONTH PERIOD. "+CHR$(179)
550 PRINT CHR$(192)+STRING$(37,CHR$(196))+CHR$(217)
560 COLOR 0,7:LOCATE 8,37:PRINT " ":LOCATE 8,37
570 I$=INKEY$:IF I$="" THEN 570 ELSE PRINT I$;:RETURN
580 CLS:END
590 PF = AF*(RF/(1#-(1#/((1#+RF)^NF)))):RETURN
600 REM - mortgage comparisons
610 COLOR 8,4,1
620 CLS:PRINT " MORTGAGE PAYMENT COMPARISON PROGRAM "
630 LOCATE 10,1
640 COLOR 0,3,1
650 PRINT CHR$(218)+STRING$(37,CHR$(196))+CHR$(191)
660 PRINT CHR$(179)+" MORTGAGE PAYMENT COMPARISONS "+CHR$(179)
670 PRINT CHR$(179)+" - USE THIS OPTION TO COMPARE "+CHR$(179)
680 PRINT CHR$(179)+" THE MONTHLY PAYMENTS OF "+CHR$(179)
690 PRINT CHR$(179)+" MORTGAGES AT VARIOUS RATES "+CHR$(179)
700 PRINT CHR$(179)+" AND PRINCIPAL AMOUNTS. "+CHR$(179)
710 PRINT CHR$(179)+" "+CHR$(179)
720 PRINT CHR$(179)+" NOTE: TO SELECT A VALUE OR AMOUNT "+CHR$(179)
730 PRINT CHR$(179)+" ENTER THE APPROPRIATE VALUE "+CHR$(179)
740 PRINT CHR$(179)+" AND PRESS THE ENTER KEY. "+CHR$(179)
750 PRINT CHR$(192)+STRING$(37,CHR$(196))+CHR$(217)
760 COLOR 14,6
770 LOCATE 3,1:LINE INPUT "ENTER BASE MORTGAGE AMOUNT ===> ";A$
780 A = VAL(A$):IF A <= 0 THEN GOTO 730
790 AINC = 2000
800 LOCATE 4,1:PRINT SPC(38);
810 LOCATE 5,1:PRINT "(1 TO 35 PERCENT)";
820 LOCATE 4,1:LINE INPUT "ENTER BASE INTEREST RATE =====> ";IR$
830 IR = VAL(IR$):IF IR>35 OR IR<1 THEN GOTO 800
840 R = IR/1200:RINC = .0025/12
850 LOCATE 5,1:PRINT SPC(38);
860 LOCATE 6,1:PRINT "(1 TO 35 YEARS)";
870 LOCATE 5,1:LINE INPUT "ENTER NUMBER OF YEARS IN MTG => ";Y$
880 Y = VAL(Y$)
890 N = Y * 12
900 NF = N
910 IF NF>420 OR NF<1 THEN GOTO 850
920 CLS
930 COLOR 0,7:PRINT " MONTHLY MORTGAGE PAYMENT COMPARISONS "
940 COLOR 15,0:LOCATE 3,10:PRINT Y$+"-YEAR MORTGAGE LOAN AMOUNTS";
950 LOCATE 5,2:PRINT "RATES";
960 FOR I = 0 TO COLS
970 LOCATE 4,9+I*8:PRINT SPC(7):LOCATE 4,9+I*8:PRINT A+I*AINC
980 NEXT I
990 FOR I = 0 TO 14
1000 LOCATE 6+I,1:PRINT SPC(7):LOCATE 6+I,2
1010 PRINT USING "##.##";INT(((R+(I*RINC))*120000!)+.5)/100
1020 NEXT I
1030 COLOR 15,0
1040 FOR I = 0 TO 14
1050 RF = R+I*RINC:AF=1:GOSUB 590
1060 FOR J = 0 TO COLS
1070 P = PF*(A+J*AINC):P = INT((P+5.000001E-03)*100)/100
1080 IF P>10000 THEN LOCATE 22,1:PRINT "PAYMENTS TOO LARGE TO DISPLAY":GOTO 1130
1090 LOCATE 6+I,9+J*8:PRINT USING "####.##";P;
1100 NEXT J
1110 NEXT I
1120 PRINT " "
1130 PRINT "PRESS SPACE BAR TO CONTINUE";
1140 IF INKEY$ <> " " THEN GOTO 1140
1150 GOTO 250
1160 REM - mortgage amortization
1170 COLOR 7,0
1180 CLS
1190 COLOR 0,7
1200 LOCATE 1,1
1210 COLOR 8,4,1
1220 PRINT " MORTGAGE AMORTIZATION PROGRAM "
1230 LOCATE 10,1:COLOR 15,0
1240 COLOR 0,3,1
1250 PRINT CHR$(218)+STRING$(37,CHR$(196))+CHR$(191)
1260 PRINT CHR$(179)+" MORTGAGE AMORTIZATION "+CHR$(179)
1270 PRINT CHR$(179)+" - USE THIS OPTION TO CALCULATE "+CHR$(179)
1280 PRINT CHR$(179)+" THE PRINCIPAL AND INTEREST "+CHR$(179)
1290 PRINT CHR$(179)+" PAID OVER ANY 12 MONTH PERIOD. "+CHR$(179)
1300 PRINT CHR$(179)+" "+CHR$(179)
1310 PRINT CHR$(179)+" NOTE: TO SELECT A VALUE OR AMOUNT "+CHR$(179)
1320 PRINT CHR$(179)+" ENTER THE APPROPRIATE VALUE "+CHR$(179)
1330 PRINT CHR$(179)+" AND PRESS THE ENTER KEY. "+CHR$(179)
1340 PRINT CHR$(192)+STRING$(37,CHR$(196))+CHR$(217)
1350 LOCATE 3,1
1360 COLOR 4,7
1370 PRINT:INPUT" SCREEN/PRINTER OUTPUT (S/P)";O$
1380 IF O$="P" THEN 2110
1390 LINE INPUT "ENTER MORTGAGE AMOUNT ===> ";A$
1400 AF = VAL(A$)
1410 LOCATE 4,1
1420 PRINT " ";
1430 LOCATE 5,1
1440 PRINT "(1 TO 35 PERCENT)";
1450 LOCATE 4,1
1460 LINE INPUT "ENTER INTEREST RATE =====> ";IR$
1470 IR = VAL(IR$)
1480 IF IR>35 THEN GOTO 1410
1490 IF IR<1 THEN GOTO 1410
1500 RF = IR/1200
1510 LOCATE 5,1
1520 PRINT " ";
1530 LOCATE 6,1
1540 PRINT "(1 TO 35 YEARS)";
1550 LOCATE 5,1
1560 LINE INPUT "ENTER NUMBER OF YEARS ===> ";Y$
1570 Y = VAL(Y$)
1580 NF = Y * 12
1590 IF NF>420 THEN GOTO 1510
1600 IF NF<1 THEN GOTO 1510
1610 GOSUB 590
1620 PF = INT((PF+5.000001E-03)*100)/100
1630 PRINT "MONTHLY PAYMENTS ARE ====>";PF
1640 COLOR 13,12
1650 PRINT "CALCULATING AMORTIZATION"
1660 COLOR 15,0
1670 IF NF>36 THEN GOTO 1690
1680 FOR I = 1 TO 1000:NEXT I
1690 AMORT(0,1) = AF
1700 FOR I = 1 TO NF
1710 AMORT(I,2) = INT((AMORT(I-1,1)*RF+5.000001E-03)*100)/100
1720 AMORT(I,1) = AMORT(I-1,1)-PF+AMORT(I,2)
1730 NEXT I
1740 FOR I = 7 TO 25:LOCATE I,1:PRINT SPC(39);:NEXT I
1750 LOCATE 9,1
1760 PRINT " - 1 TO"+STR$(NF)
1770 PRINT " - 0 TO END AMORTIZATION";
1780 LOCATE 7,1
1790 PRINT "ENTER BEGINNING PAYMENT NUMBER"
1800 LINE INPUT "OF (12 MONTH MAX) PERIOD ===> ";PERIOD$
1810 PD= VAL(PERIOD$)
1820 IF PD <> 0 THEN GOTO 1840
1830 IF PERIOD$ <> "0" THEN GOTO 1780
1840 IF PD=0 THEN GOTO 250
1850 IF PD>NF THEN GOTO 1780
1860 IF PD<0 THEN GOTO 1780
1870 PRINT:PRINT:INPUT "FOR HOW MANY MONTHS =====> ";MO
1880 LOCATE 7,1
1890 PRINT SPC(39)
1900 PRINT SPC(39)
1910 LOCATE 9,1
1920 PRINT "PYMNT PRINCIPAL INTEREST BALANCE"
1930 TINT = 0
1940 FOR I = PD TO PD+MO-1
1950 IF I> NF THEN GOTO 1990
1960 TINT = TINT + AMORT(I,2)
1970 PRINT USING "### ";I;
1980 PRINT USING " ######.##";PF-AMORT(I,2);AMORT(I,2);AMORT(I,1)
1990 NEXT I
2000 PRINT " "
2010 PRINT "INTEREST FOR";MO;"PERIODS =";
2020 PRINT USING "######.## ";TINT
2030 LOCATE 25,1
2040 PRINT "PRESS SPACE BAR TO CONTINUE";
2050 LOCATE ,,0
2060 IF INKEY$ <> "" THEN GOTO 2060
2070 CMD$ = INKEY$
2080 IF CMD$ = " " THEN GOTO 1740
2090 IF CMD$ =CHR$(27) THEN GOTO 300
2100 GOTO 2070
2110 LINE INPUT "ENTER MORTGAGE AMOUNT ===> ";A$
2120 LPRINT:LPRINT"MORTGAGE AMOUNT => $";A$
2130 AF = VAL(A$)
2140 LOCATE 6,1
2150 PRINT " ";
2160 LOCATE 7,1
2170 PRINT "(1 TO 35 PERCENT)";
2180 LOCATE 6,1
2190 LINE INPUT "ENTER INTEREST RATE =====> ";IR$
2200 LPRINT:LPRINT"INTEREST RATE ===> ";IR$;"%"
2210 IR = VAL(IR$)
2220 IF IR>35 THEN GOTO 2140
2230 IF IR<1 THEN GOTO 2140
2240 RF = IR/1200
2250 LOCATE 7,1
2260 PRINT " ";
2270 LOCATE 8,1
2280 PRINT "(1 TO 35 YEARS)";
2290 LOCATE 7,1
2300 LINE INPUT "ENTER NUMBER OF YEARS ===> ";Y$
2310 LPRINT"# YEARS OF MORT.=> ";Y$
2320 Y = VAL(Y$)
2330 NF = Y * 12
2340 IF NF>420 THEN GOTO 2250
2350 IF NF<1 THEN GOTO 2250
2360 GOSUB 590
2370 PF = INT((PF+5.000001E-03)*100)/100
2380 PRINT "MONTHLY PAYMENTS ARE ====>";PF
2390 LPRINT"MONTHLY PAYMENT => $";PF
2400 COLOR 13,12
2410 PRINT "CALCULATING AMORTIZATION"
2420 COLOR 15,0
2430 IF NF>36 THEN GOTO 2450
2440 FOR I = 1 TO 1000:NEXT I
2450 AMORT(0,1) = AF
2460 FOR I = 1 TO NF
2470 AMORT(I,2) = INT((AMORT(I-1,1)*RF+5.000001E-03)*100)/100
2480 AMORT(I,1) = AMORT(I-1,1)-PF+AMORT(I,2)
2490 NEXT I
2500 FOR I = 7 TO 25:LOCATE I,1:PRINT SPC(39);:NEXT I
2510 LOCATE 9,1
2520 PRINT " - 1 TO"+STR$(NF)
2530 PRINT " - 0 TO END AMORTIZATION";
2540 LOCATE 7,1
2550 PRINT "ENTER BEGINNING PAYMENT NUMBER"
2560 LINE INPUT "OF (12 MONTH MAX) PERIOD ===> ";PERIOD$
2570 PD= VAL(PERIOD$)
2580 IF PD <> 0 THEN GOTO 2600
2590 IF PERIOD$ <> "0" THEN GOTO 2540
2600 IF PD=0 THEN GOTO 250
2610 IF PD>NF THEN GOTO 2540
2620 IF PD<0 THEN GOTO 2540
2630 PRINT:PRINT:INPUT "FOR HOW MANY MONTHS =====> ";MO
2640 LOCATE 7,1
2650 PRINT SPC(39)
2660 PRINT SPC(39)
2670 LOCATE 9,1
2680 LPRINT:LPRINT "PYMNT PRINCIPAL INTEREST BALANCE"
2690 TINT = 0
2700 FOR I = PD TO PD+MO-1
2710 IF I> NF THEN GOTO 2750
2720 TINT = TINT + AMORT(I,2)
2730 LPRINT USING "### ";I;
2740 LPRINT USING " ######.##";PF-AMORT(I,2);AMORT(I,2);AMORT(I,1)
2750 NEXT I
2760 LPRINT " "
2770 LPRINT "INTEREST FOR";MO;"PERIODS =";
2780 LPRINT USING "######.## ";TINT
2790 LOCATE 25,1
2800 PRINT "PRESS SPACE BAR TO CONTINUE";
2810 LOCATE ,,0
2820 IF INKEY$ <> "" THEN GOTO 2820
2830 CMD$ = INKEY$
2840 IF CMD$ = " " THEN GOTO 2500
2850 IF CMD$ =CHR$(27) THEN GOTO 300
2860 GOTO 2830